Skip to main content

Available Gherkin Step Definitions

Audit_Event

Statement File LocationTypeStep DefinitionWhat Is It Used For?
audit_event/steps.pyThenI expect an audit event with severity "{severity}" and contains the text "{log_substring}"Step that periodically searches for an audit event based on severity level, time and text.
audit_event/steps.pyThenI expect an audit event with severity "{severity}" and contains the text "{log_substring}" within "{time_out_in_minutes:d}" minutes with a poll frequency of "{polling_freq_in_seconds:d}" secondsStep that searches for an audit event based on severity level, time and text.
audit_event/steps.pyThenI expect new audit eventsStep to check for the existence of new audit events.

Billing_Account

Statement File LocationTypeStep DefinitionWhat Is It Used For?
billing_account/steps.pyGivenI add the property with the key "{prop_key}" with the value "{prop_value}" to the current billing accountAdds a property key-value to the current billing account.
billing_account/steps.pyGivenI create a namespace with the name "{namespace_name}" in the billing account with id "{billing_account_id}"Creates a namespace to be used by the test.
billing_account/steps.pyGivenI do not expect the current billing account to contain the property key '{prop_key}' with the value '{prop_value}'Checks that a property key-value of the current billing account does not exist.
billing_account/steps.pyThenI do not expect the current billing account to contain the property key '{prop_key}' with the value '{prop_value}'Checks that a property key-value of the current billing account does not exist.
billing_account/steps.pyGivenI expect the current billing account to contain the property key "{prop_key}" with the value "{prop_value}"Checks a property key-value of the current billing account.
billing_account/steps.pyThenI remove the property with the key "{prop_key}" with the value "{prop_value}" from the current billing accountRemoves a property key-value from the current billing account.
billing_account/steps.pyGivenI remove the property with the key "{prop_key}" with the value "{prop_value}" from the current billing accountRemoves a property key-value from the current billing account.

Channel_Classifier

Statement File LocationTypeStep DefinitionWhat Is It Used For?
channel_classifier/steps.pyGivenI add a datapoint attribute if it does not exist with the name "{dpa_name}" of type "{dpa_type}" and editable flag set to "{is_editable}" to the channel "{channel_name}"Adds new DPAs to the channel classifier.
channel_classifier/steps.pyWhenI add a datapoint attribute if it does not exist with the name "{dpa_name}" of type "{dpa_type}" and editable flag set to "{is_editable}" to the channel "{channel_name}"Adds new DPAs to the channel classifier.
channel_classifier/steps.pyGivenI add datapoint attributes if they do not exist to the channel "{channel_name}" with the following name-type-editable flag:Adds new DPAs to the channel classifier.
channel_classifier/steps.pyWhenI add datapoint attributes if they do not exist to the channel "{channel_name}" with the following name-type-editable flag:Adds new DPAs to the channel classifier.
channel_classifier/steps.pyThenI check the channel "{channel_name}" has a datapoint attribute with the name "{dpa_name}" of type "{dpa_type}"Checks that the channel classifier has the expected datapoint attributes configured with type.
channel_classifier/steps.pyThenI check the channel "{channel_name}" has the following datapoint attributes configured with type:Checks that the channel classifier has the expected datapoint attributes configured with type.
channel_classifier/steps.pyGivenI create all channel classifiers from "{file_name}" if they don't existCreates all channel classifiers from a file if they don't exist.
channel_classifier/channel_family/steps.pyGivenI create all channel families from "{file_name}" if they don't existCreates all channel families from a file if they don't exist.
channel_classifier/steps.pyThenI expect this channel classifier "{classifier_name}" to be of data point type "{data_point_type}?"Checks if the data point type of channel classifier is as expected.
channel_classifier/steps.pyThenI expect this channel classifier "{classifier_name}" to be of unit type "{unit_type}?"Checks if the data unit type of channel classifier is as expected.
channel_classifier/steps.pyGivenI upload all channel classifiers matching the regex pattern "{pattern}" using the default resource managerUploads all channel classifiers whose names match the given regex pattern using a specified resource manager.
channel_classifier/steps.pyGivenI upload all channel classifiers matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all channel classifiers whose names match the given regex pattern using a specified resource manager.
channel_classifier/steps.pyGivenI upload all channel classifiers using the default resource managerUploads all channel classifiers using a specified resource manager.
channel_classifier/steps.pyGivenI upload all channel classifiers using the resource manager with name "{manager_name}"Uploads all channel classifiers using a specified resource manager.
channel_classifier/steps.pyGivenI upload the channel classifier with name "{name}" using the default resource managerUploads a channel classifier with given name using a specified resource manager.
channel_classifier/steps.pyGivenI upload the channel classifier with name "{name}" using the resource manager with name "{manager_name}"Uploads a channel classifier with given name using a specified resource manager.
channel_classifier/steps.pyWhenI view the list of channel classifiers, I expect the channel "{channel_name}" the datapoint attribute "{dpa_name}" to include enum values "{enum_values}"Checks that the channel classifier has the expected list of enums in the DPA.
channel_classifier/steps.pyWhenI view the list of channel classifiers, I expect the channel "{channel_name}" to have the attribute "{attr_name}" with the value "{attr_value}"Checks that the channel classifier has the expected attribute when browsing the list of channels.
channel_classifier/steps.pyWhenI view the list of channel classifiers, I expect the channel "{channel_name}" to have the datapoint attribute "{dpa_name}" of type "{dpa_type}"Checks that the channel classifier has the expected DPA when browsing the list of channels.
channel_classifier/steps.pyThenOn channel classifier with name "{name}" I expect the attribute "{attribute}" with value "{value}"Asserts the value of an attribute from a channel classifier.
channel_classifier/steps.pyGivenOn channel classifier with name "{name}" I expect the attribute "{attribute}" with value "{value}"Asserts the value of an attribute from a channel classifier.
channel_classifier/steps.pyThenOn channel classifier with name "{name}" I expect the datapoint attribute "{datapoint_attribute_name}" to include enum values "{enum_values}"Validates that the datapoint attribute of a channel classifier contains the expected list of enum values.
channel_classifier/steps.pyWhenOn channel classifier with name "{name}" I update the attribute "{attribute}" to "{value}"Updates the value of a specific attribute of a channel classifier.
channel_classifier/steps.pyWhenOn channel classifier with name "{name}" I update the datapoint attribute "{datapoint_attribute_name}" with enum values "{enum_values}" if they do not existUpdates the datapoint attribute of a channel classifier with individual enum values.
channel_classifier/steps.pyThenthe attribute "{attribute}" cannot be updated with blank value for channel classifier "{name}"Attempts to update channel classifier value with blank value.

Chatbot

Statement File LocationTypeStep DefinitionWhat Is It Used For?
chatbot/steps.pyGivenI expect a successful response when I send a question "{question_text}" to energychatSend a question to the energychat endpoint and verify a successful response.
chatbot/steps.pyGivenI greet the chatbotGreet the chatbot to initialize a session with a default persona.

Clients

Statement File LocationTypeStep DefinitionWhat Is It Used For?
clients.pyGivenI purge all dataPurges all data from the target namespace.
clients.pyGivenI purge all data I have permission to deletePurges all data from the target namespace the user has permission to list.
clients.pyGivenI purge all data I have permission to delete on namespace "{namespace_name}"Purges all data from the target namespace the user has permission to list.
clients.pyGivenI switch to api version "{api_version}"Switches between API 1.5 and 2 versions.
clients.pyThenI switch to api version "{api_version}"Switches between API 1.5 and 2 versions.
clients.pyGivenI use the namespace with the name "{nsp_name}"This step is used to get the namespace id by name and set it for the test run.

Computed_Flags

Statement File LocationTypeStep DefinitionWhat Is It Used For?
computed_flags/steps.pyGivenI create all flags from "{file_name}"Creates all flags present in a given file.
computed_flags/steps.pyThenI expect the flag with the name "{name}" to have the attribute "{attr}" with the value "{value}"Checks if the value of an attribute in the flag.

Datapoint

Statement File LocationTypeStep DefinitionWhat Is It Used For?
datapoint/steps.pyWhenI edit on datasource "{datasource_id}" for channel "{annotation_channel}" at "{timestamp}" the annotation with the name "{annotation_key}" to the value "{value}" with edit reason "{edit_reason}"Edits a single annotation value for a specified timestamp.
datapoint/steps.pyWhenI edit on datasource "{datasource_id}" for channel "{channel_classifier}" at "{timestamp}" the datapoint attribute with the name "{dpa_name}" to the value "{value}" with edit reason "{edit_reason}"Edits a single datapoint value for a specified timestamp.
datapoint/steps.pyWhenI edit on datasource "{datasource_id}" for channel "{channel_classifier}" at "{timestamp}" the value to "{value}" with edit reason "{edit_reason}"Edits a single datapoint value for a specified timestamp.
datapoint/steps.pyWhenI edit on datasource "{datasource_id}" the following annotations with edit reason "{edit_reason}":Edits multiple annotations for a specified datasource using a datatable.
datapoint/steps.pyWhenI edit on datasource "{datasource_id}" the following datapoint attributes with edit reason "{edit_reason}":Edits multiple datapoint attributes for a specified datasource using a datatable.
datapoint/steps.pyWhenI edit on datasource "{datasource_id}" the following datapoint values with edit reason "{edit_reason}":Edits multiple datapoint values for a specified datasource using a datatable.
datapoint/steps.pyWhenI update the datapoints from the file "{file_name}"Updates a datapoint from a file.

Datasource

Statement File LocationTypeStep DefinitionWhat Is It Used For?
datasource/steps.pyWhenI add the channels from "{file_name}" to datasource "{datasource_id}"Adds channels from a file to a datasource.
datasource/steps.pyGivenI add the channels from "{file_name}" to that datasource "{datasource_id}"Adds channels from a file to a datasource.
datasource/steps.pyGivenI count the channels of datasource "{datasource_id}"Counts and saves the amount of channels in a datasource.
datasource/steps.pyGivenI create all datasources from "{file_name}"Creates datasources from a given file.
datasource/steps.pyWhenI create all datasources from "{file_name}"Creates datasources from a given file.
datasource/steps.pyGivenI do not expect a channel classifier "{classifier_name}" to be present for datasource "{datasource_id}"Checks that channel classifier is absent with the given name for the datasource with the given ID.
datasource/steps.pyThenI do not expect a channel classifier "{classifier_name}" to be present for datasource "{datasource_id}"Checks that channel classifier is absent with the given name for the datasource with the given ID.
datasource/steps.pyThenI do not expect response to contain "{unexpected_ds_ids}" when I search for datasources with no query and filter by the datasource classifier "{ds_classifier_name}"Verifies that datasources from the list are not returned by search by datasource classifier filter.
datasource/steps.pyThenI do not expect response to contain "{unexpected_ds_ids}" when I search for datasources with query "{search_filter}"Verifies that datasources from the list are not returned by search with query.
datasource/steps.pyThenI do not expect response to contain "{unexpected_ds_ids}" when I search for datasources with query "{search_filter}" and filter by the datasource classifier "{ds_classifier_name}"Verifies that datasources from the list are not returned by search with query and datasource classifier.
datasource/steps.pyWhenI expect "{increment:d}" new flows on datasource "{datasource_id}"Check if a given amount of new flows are created within the default amount of time on a given datasource.
datasource/steps.pyThenI expect "{increment:d}" new flows on datasource "{datasource_id}"Check if a given amount of new flows are created within the default amount of time on a given datasource.
datasource/steps.pyGivenI expect "{increment:d}" new flows with channel classifier "{channel_classifier}" on datasource "{datasource_id}"Checks if amount of new flows with channel classifier is as expected.
datasource/steps.pyThenI expect "{increment:d}" new flows with channel classifier "{channel_classifier}" on datasource "{datasource_id}"Checks if amount of new flows with channel classifier is as expected.
datasource/steps.pyGivenI expect "{increment:d}" new flows with channel classifier "{channel_classifier}" within "{min_timeout:d}" minutes on datasource "{datasource_id}" with a poll frequency of "{freq:d}" secondsChecks if amount of new flows with channel classifier is as expected.
datasource/steps.pyThenI expect "{increment:d}" new flows with channel classifier "{channel_classifier}" within "{min_timeout:d}" minutes on datasource "{datasource_id}" with a poll frequency of "{freq:d}" secondsChecks if amount of new flows with channel classifier is as expected.
datasource/steps.pyWhenI expect "{increment:d}" new flows within "{min_timeout:d}" minutes on datasource "{datasource_id}" with a poll frequency of "{freq:d}" secondsCheck if a given amount of new flows are created within a given amount of time on a given datasource.
datasource/steps.pyThenI expect "{increment:d}" new flows within "{min_timeout:d}" minutes on datasource "{datasource_id}" with a poll frequency of "{freq:d}" secondsCheck if a given amount of new flows are created within a given amount of time on a given datasource.
datasource/steps.pyThenI expect a channel classifier "{classifier_name}" to be present for datasource "{datasource_id}"Checks that channel classifier is present with the given name for the datasource with the given ID.
datasource/steps.pyWhenI expect a new flow with config name "{flow_name}" and status "{flow_status}" on datasource "{datasource_id}"Check if a new flow using a specific flow config was created and has a specific status within the default amount of time on a given datasource.
datasource/steps.pyThenI expect a new flow with config name "{flow_name}" and status "{flow_status}" on datasource "{datasource_id}"Check if a new flow using a specific flow config was created and has a specific status within the default amount of time on a given datasource.
datasource/steps.pyWhenI expect a new flow with config name "{flow_name}" and status "{flow_status}" on datasource "{datasource_id}" with a poll frequency of "{freq:d}" secondsCheck if a new flow using a specific flow config was created and has a specific status within the default amount of time on a given datasource.
datasource/steps.pyThenI expect a new flow with config name "{flow_name}" and status "{flow_status}" on datasource "{datasource_id}"with a poll frequency of "{freq:d}" secondsCheck if a new flow using a specific flow config was created and has a specific status within the default amount of time on a given datasource.
datasource/steps.pyGivenI expect a new flow with config name "{flow_name}" and status "{flow_status}" with channel classifier "{channel_classifier}" on datasource "{datasource_id}"Checks if amount of new successful or failed flows with channel classifier is as expected.
datasource/steps.pyThenI expect a new flow with config name "{flow_name}" and status "{flow_status}" with channel classifier "{channel_classifier}" on datasource "{datasource_id}"Checks if amount of new successful or failed flows with channel classifier is as expected.
datasource/steps.pyGivenI expect a new flow with config name "{flow_name}" and status "{flow_status}" with channel classifier "{channel_classifier}" on datasource "{datasource_id}" within "{timeout:d}" minutes with a poll frequency of "{freq:d}" secondsChecks if amount of new successful or failed flows with channel classifier is as expected.
datasource/steps.pyThenI expect a new flow with config name "{flow_name}" and status "{flow_status}" with channel classifier "{channel_classifier}" on datasource "{datasource_id}" within "{timeout:d}" minutes with a poll frequency of "{freq:d}" secondsChecks if amount of new successful or failed flows with channel classifier is as expected.
datasource/steps.pyThenI expect for datasource with id "{datasource_id}" a channel with channel classifier "{classifier_name}" which is "{source_or_not}"Checks if a channel classifier with the given name was created on a datasource with the given ID.
datasource/steps.pyThenI expect for datasource with id "{datasource_id}" in channel "{channel_classifier}" property tag "{tag_key}" with value "{tag_value}" and "{amount_versions}"Checks the property tags of a given channel.
datasource/steps.pyThenI expect for datasource with id "{datasource_id}" in channel "{channel_classifier}" property tag "{tag_key}", "{tag_value}", valid from "{valid_from}", version "{version}" and removed "{removed}"Checks the property tags of a given channel.
datasource/steps.pyThenI expect in "{channel_classifier}" property tag "{tag_key}" with value "{tag_value}" and "{amount_versions}"Checks the property tags of a given channel.
datasource/steps.pyThenI expect in "{channel_classifier}" property tag "{tag_key}", "{tag_value}", valid from "{valid_from}", version "{version}" and removed "{removed}"Checks the property tags of a given channel.
datasource/steps.pyThenI expect latest flow with channel classifier "{channel_classifier}" on datasource "{datasource_id}" with rule "{rule_in_sequence}" to have the parameter "{rule_parameter}" with value "{rule_parameter_value}"Checks if a datasource contains a given flow run rule parameter.
datasource/steps.pyGivenI expect no channels for the datasource with id "{datasource_id}"Checks that a datasource has no channels.
datasource/steps.pyThenI expect no channels for the datasource with id "{datasource_id}"Checks that a datasource has no channels.
datasource/steps.pyGivenI expect no new flows with channel classifier "{channel_classifier}" on datasource "{datasource_id}"Verify that no new flows with channel classifier are created within the default polling time.
datasource/steps.pyThenI expect no new flows with channel classifier "{channel_classifier}" within "{min_timeout:d}" minutes on datasource "{datasource_id}" with a poll frequency of "{freq:d}" secondsVerify that no new flows with channel classifier are created within a given amount of time.
datasource/steps.pyThenI expect response containing "{ds_ids}" when I search for datasources with no filtersSearch for datasources without filters, verifies the required IDs are returned.
datasource/steps.pyThenI expect response containing "{ds_ids}" when I search for datasources with no query and filter by the datasource classifier "{ds_classifier_name}"Search for datasources, filter by the datasource classifier. Verifies the required IDs are returned.
datasource/steps.pyThenI expect response containing "{ds_ids}" when I search for datasources with query "{search_filter}"Queries datasources, verifies the required IDs are returned.
datasource/steps.pyThenI expect response containing "{ds_ids}" when I search for datasources with query "{search_filter}" and filter by the datasource classifier "{ds_classifier_name}"Queries datasources and filters by the datasource classifier. Verifies the required IDs are returned.
datasource/steps.pyThenI expect response to contain only datasources with id "{expected_ds_ids}" when I search for datasources with query "{query}"Verifies that only expected datasources are returned by search with query.
datasource/steps.pyThenI expect response to contain only datasources with id "{expected_ds_ids}" when I search for datasources with query "{query}" and filter by the datasource classifier "{ds_classifier_name}"Verifies that only expected datasources are returned by search with query and filter by datasource classifier.
datasource/steps.pyThenI expect the attribute "{attribute}" contains the value "{value}" for datasource "{datasource_id}"Checks if a datasource has attribute as expected.
datasource/steps.pyGivendatasource "{datasource_id}" has at least one channelChecks if a datasource has at least one channel.
datasource/steps.pyGiventhe datasource with ID "{datasource_id}" is not available in datasourcesConfirm that a datasource with the given ID is not available in the datasources list.
datasource/steps.pyThenthe datasource with id "{datasource_id}" includes the channels from "{file_name}"Checks if a datasource has all the channels from a file.
datasource/steps.pyThenthe number of channels of datasource "{datasource_id}" has changed by "{expected_diff:d}"Checks if the amount of channels in a datasource has changed by the expected value.
datasource/steps.pyGiventhere is a datasource with id "{datasource_id}"Check if a datasource with the given ID is created withing the default amount of time.
datasource/steps.pyWhenthere is a datasource with id "{datasource_id}"Check if a datasource with the given ID is created withing the default amount of time.
datasource/steps.pyThenthere is a datasource with id "{datasource_id}"Check if a datasource with the given ID is created withing the default amount of time.
datasource/steps.pyThenthere is a datasource with id "{datasource_id}" within "{timeout:d}" minutes with a poll frequency of "{polling_frequency_in_seconds:d}" seconds',Check if a datasource with the given ID is created withing a given amount of time using a given check interval.

Datasource_Classifier

Statement File LocationTypeStep DefinitionWhat Is It Used For?
datasource_classifier/steps.pyWhenI change the "{attribute_key}" of the datasource classifier "{ds_classifier_name}" to "{attribute_value}"Changes the value of a key in a datasource classifier.
datasource_classifier/steps.pyGivenI check the number of datasource classifiers in my namespaceChecks and saves the datasource classifiers currently available in the namespace.
datasource_classifier/steps.pyWhenI create all datasource classifiers from "{file_name}"Creates datasource classifiers from a given file.
datasource_classifier/steps.pyGivenI create all datasource classifiers from "{file_name}"Creates datasource classifiers from a given file.
datasource_classifier/steps.pyThenI expect the "{attribute_key}" of the datasource classifier "{ds_classifier_name}" to be equal to "{attribute_value}"Checks if the attribute of a datasource classifier equals to the expected value.
datasource_classifier/steps.pyGivenI upload all datasource classifiers matching the regex pattern "{pattern}" using the default resource managerUploads all datasource classifiers whose names match the given regex pattern using a specified resource manager.
datasource_classifier/steps.pyGivenI upload all datasource classifiers matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all datasource classifiers whose names match the given regex pattern using a specified resource manager.
datasource_classifier/steps.pyGivenI upload all datasource classifiers using the default resource managerUploads all datasource classifiers using a specified resource manager.
datasource_classifier/steps.pyGivenI upload all datasource classifiers using the resource manager with name "{manager_name}"Uploads all datasource classifiers using a specified resource manager.
datasource_classifier/steps.pyGivenI upload the datasource classifier with name "{name}" using the default resource managerUploads a datasource classifier with given name using a specified resource manager.
datasource_classifier/steps.pyGivenI upload the datasource classifier with name "{name}" using the resource manager with name "{manager_name}"Uploads a datasource classifier with given name using a specified resource manager.
datasource_classifier/steps.pyThenthe number of datasource classifiers has increased by "{expected_increase:d}"Check for the increase in the amount of datasource classifiers since the last time.

Decision_Tree

Statement File LocationTypeStep DefinitionWhat Is It Used For?
decision_tree/steps.pyGivenI create all decision trees from "{file_name}"Creates decision trees from a given file.
decision_tree/steps.pyGivenI set the default decision tree in the current namespace to "{decision_tree_name}"Sets the default decision tree in the current namespace to the given name.
decision_tree/steps.pyGivenI upload all flow decision trees matching the regex pattern "{pattern}" using the default resource managerUploads all flow decision trees whose names match the given regex pattern using a specified resource manager.
decision_tree/steps.pyGivenI upload all flow decision trees matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all flow decision trees whose names match the given regex pattern using a specified resource manager.
decision_tree/steps.pyGivenI upload all flow decision trees using the default resource managerUploads all flow decision trees using a specified resource manager.
decision_tree/steps.pyGivenI upload all flow decision trees using the resource manager with name "{manager_name}"Uploads all flow decision trees using a specified resource manager.
decision_tree/steps.pyGivenI upload all rule decision trees matching the regex pattern "{pattern}" using the default resource managerUploads all rule decision trees whose names match the given regex pattern using a specified resource manager.
decision_tree/steps.pyGivenI upload all rule decision trees matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all rule decision trees whose names match the given regex pattern using a specified resource manager.
decision_tree/steps.pyGivenI upload all rule decision trees using the default resource managerUploads all rule decision trees using a specified resource manager.
decision_tree/steps.pyGivenI upload all rule decision trees using the resource manager with name "{manager_name}"Uploads all rule decision trees using a specified resource manager.
decision_tree/steps.pyGivenI upload the flow decision tree with name "{name}" using the default resource managerUploads a flow decision tree with given name using a specified resource manager.
decision_tree/steps.pyGivenI upload the flow decision tree with name "{name}" using the resource manager with name "{manager_name}"Uploads a flow decision tree with given name using a specified resource manager.
decision_tree/steps.pyGivenI upload the rule decision tree with name "{name}" using the default resource managerUploads a rule decision tree with given name using a specified resource manager.
decision_tree/steps.pyGivenI upload the rule decision tree with name "{name}" using the resource manager with name "{manager_name}"Uploads a rule decision tree with given name using a specified resource manager.

File

Statement File LocationTypeStep DefinitionWhat Is It Used For?
file/steps.pyWhenI add the tags "{tags}" to the file with the name "{partial_file_name}"Adds tags to the specified file.
file/steps.pyWhenI add the tags "{tags}" to the file with the name containing "{partial_file_name}"Adds tags to the file by partial file name (allowing prefix).
file/steps.pyWhenI add the tags "{tags}" to the last fileAdds tags to the last uploaded file.
file/steps.pyWhenI assign market adapter with the name "{adapter_name}" to the last fileAssigns a market adapter to the last uploaded file.
file/steps.pyGivenI check the number of files in my namespaceChecks the number of files in the namespace.
file/steps.pyWhenI delete tag "{tag_name}" from the last fileDeletes the given tag from the last uploaded file.
file/steps.pyGivenI delete the file "{file_name}" if existsDeletes file if exists.
file/steps.pyWhenI delete the last fileDeletes the last uploaded file.
file/steps.pyThenI expect "{file_name}" in file manager within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_freq_in_seconds:d}" secondsVerifies that a file is in storage within a given time limit.
file/steps.pyGivenI expect the file "{file_name}" in file managerVerifies that a file is in storage within default time limit.
file/steps.pyThenI expect the file "{file_name}" in file managerVerifies that a file is in storage within default time limit.
file/steps.pyThenI expect the file "{file_name}" to have an attribute "{attr_key}" with value "{attr_value}"Validates the file's attribute value by file name.
file/steps.pyThenI expect the file with the name "{file_name}" in file manager with content matching the file "{test_data_file_name}"Checks the number of files in the namespace.
file/steps.pyThenI expect the file with the name "{file_name}" in file manager with content matching the file "{test_data_file_name}" after processed by script in "{script_path}"Checks the number of files in the namespace.
file/steps.pyGivenI expect the file with the name containing "{file_name}" in file managerVerifies that a file is in storage by partial name search within default time limit.
file/steps.pyThenI expect the file with the name containing "{file_name}" in file managerVerifies that a file is in storage by partial name search within default time limit.
file/steps.pyThenI expect the file with the name containing "{file_name}" to have an attribute "{attr_key}" with value "{attr_value}"Validates the file's attribute value using partial file name search.
file/steps.pyThenI expect the file with the name containing "{file_name_part}" in file manager within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_freq_in_seconds:d}" secondsVerifies that a file is in storage within a given time limit, by partial file name search.
file/steps.pyThenI expect the file with the partial name "{file_name}" in file manager with content matching the file "{test_data_file_name}" after processed by script in "{script_path}"Checks the number of files in the namespace.
file/steps.pyWhenI ingest the file "{file_name}"Ingests a file without specifying a market adapter.
file/steps.pyGivenI ingest the file "{file_name}"Ingests a file without specifying a market adapter.
file/steps.pyWhenI ingest the file "{file_name}" with market adapter "{adapter_name}"Ingests a file using a given market adapter to do so.
file/steps.pyGivenI ingest the file "{file_name}" with market adapter "{adapter_name}"Ingests a file using a given market adapter to do so.
file/steps.pyThenI should see the details of the last fileChecks the details of the last uploaded file.
file/steps.pyThenI should see the tags "{tags}" in the file with the name "{file_name}"Validates if the given tags are present in the specified file.
file/steps.pyThenI should see the tags "{tags}" in the file with the name containing "{partial_file_name}"Validates if the given tags are present in the file searched by partial name (allowing prefix).
file/steps.pyThenI should see the tags "{tags}" in the last fileValidates if the given tags are present in the latest file.
file/steps.pyGivenI upload the file "{file_name}" with market adapter "{adapter_name}" assigned and tags "{tag_names}" addedUploads a file to file management with assigned market adapter, and adds the given tags to it.
file/steps.pyGivenI upload the file "{file_path}"Uploads files to file management.
file/steps.pyWhenI upload the file "{file_path}"Uploads files to file management.
file/steps.pyGivenI upload the file "{file_path}" as "{new_file_name}" where the value for "{key}" is "{value}"Uploads a file to the file management with the specified name, and saves the specified value with the key in the context to share among steps.
file/steps.pyGivenI upload the file "{file_path}" where the value for "{key}" is "{value}"Uploads a file to the file management and saves the specified value with the key in the context to share among steps.
file/steps.pyGivenI upload the file "{file_path}" with market adapter "{adapter_name}" assignedUploads a file to file management with assigned market adapter.
file/steps.pyThenThe tag "{tag_name}" is not present in the last fileValidates that the given tag is not present in the last uploaded file.
file/steps.pyThenthe file "{file_name}" should be linked to the market adapter with the name "{ma_name}"Validates if the file is linked to the given market adapter by file name.
file/steps.pyThenthe file with the name containing "{file_name}" should be linked to the market adapter with the name "{ma_name}"Validates if the file is linked to the given market adapter by partial file name search.
file/steps.pyThenthe last file should be linked to market adapter with the name "{adapter_name}"Validates the last uploaded file is linked to the given market adapter.
file/steps.pyThenthe number of files has decreased by "{expected_decrease:d}"Validates the number of files has decreased to an expected value within a given time limit.
file/steps.pyThenthe number of files has decreased by "{expected_decrease:d}" within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_freq_in_seconds:d}" secondsChecks if the number of files has decreased by a certain amount within a given time limit.
file/steps.pyThenthe number of files has increased by "{expected_increase:d}"Validates the number of files has increased to an expected value within a given time limit.
file/steps.pyThenthe number of files has increased by "{expected_increase:d}" within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_freq_in_seconds:d}" secondsChecks if the number of files has increased by a certain amount within a given time limit.
file/steps.pyGiventhere is no datasource with id "{datasource_id}" I upload and ingest the file "{file_path}" with market adapter "{market_adapter_name}"Conditional ingestion if a given datasource does not exist. This is helpful for scenarios where the setup might be expensive. For example when the test depends on the existence of a datasource with particularly big sizes.
file/steps.pyThenthere is/are "{expected_amount:d}" file(s) created after ingestionVerifies that the number of files created after ingestion is as expected.

Flow_Design

Statement File LocationTypeStep DefinitionWhat Is It Used For?
flow_design/steps.pyWhenI change the "{key}" of the last flow design to "{value}"Updates the last flow design with the given key and value.
flow_design/steps.pyGivenI check the number of flow designs in my namespaceFetches the flow designs from the active namespace and stores them on the context.
flow_design/steps.pyGivenI create all flow designs from "{flow_designs_file_name}"Creates flow designs from a file.
flow_design/steps.pyGivenI create all flow designs from "{flow_designs_file_name}" and decision trees from "{decision_trees_file_name}"Creates flow designs and decision trees from a file.
flow_design/steps.pyGivenI create the delta variable "{variable_name}" with a timeout of "{timeout_in_seconds:d}" seconds from nowUpdate flow - seq - rule parameter.
flow_design/steps.pyWhenI create the delta variable "{variable_name}" with a timeout of "{timeout_in_seconds:d}" seconds from nowUpdate flow - seq - rule parameter.
flow_design/steps.pyThenI create the delta variable "{variable_name}" with a timeout of "{timeout_in_seconds:d}" seconds from nowUpdate flow - seq - rule parameter.
flow_design/steps.pyWhenI delete the last flow designDeletes the last flow design.
flow_design/steps.pyThenI have no flow designs anymoreValidates that there are no flow designs.
flow_design/steps.pyThenI should be able to see the names of all flow designsValidates that all flow designs in the active namespace have names.
flow_design/steps.pyThenI should see the details of the last flow designsValidates that the details of the last flow designs can be retrieved.
flow_design/steps.pyThenI should see the versions of the last flow designValidates that the versions of the last flow design can be retrieved.
flow_design/steps.pyWhenI trigger the datasource flow design "{flow_design_name}" for the datasource "{datasource_id}"Triggers a flow for a Datasource.
flow_design/steps.pyWhenI trigger the datasource flow design "{flow_design_name}" for the datasource "{datasource_id}" between "{start_date}" and "{end_date}"Triggers a flow for a Datasource.
flow_design/steps.pyGivenI trigger the flow design "{flow_design_name}" for the datasource "{datasource_id}" with the channel classifier "{channel_classifier}" between "{start_date}" and "{end_date}"Triggers a flow for a Datasource.
flow_design/steps.pyWhenI trigger the flow design "{flow_design_name}" for the datasource "{datasource_id}" with the channel classifier "{channel_classifier}" between "{start_date}" and "{end_date}"Triggers a flow for a Datasource.
flow_design/steps.pyGivenI update in the flow design "{flow_to_update}" the sequence name "{seq_to_update}" the rule function "{rule_function_name}" with parameter key "{param_key_to_update}" the new value "{value_to_update}"Update flow - seq - rule parameter.
flow_design/steps.pyWhenI update in the flow design "{flow_to_update}" the sequence name "{seq_to_update}" the rule function "{rule_function_name}" with parameter key "{param_key_to_update}" the new value "{value_to_update}"Update flow - seq - rule parameter.
flow_design/steps.pyThenI update in the flow design "{flow_to_update}" the sequence name "{seq_to_update}" the rule function "{rule_function_name}" with parameter key "{param_key_to_update}" the new value "{value_to_update}"Update flow - seq - rule parameter.
flow_design/steps.pyGivenI upload all flows matching the regex pattern "{pattern}" using the default resource managerUploads all flows whose names match the given regex pattern using a specified resource manager.
flow_design/steps.pyGivenI upload all flows matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all flows whose names match the given regex pattern using a specified resource manager.
flow_design/steps.pyGivenI upload all flows using the default resource managerUploads all flows using a specified resource manager.
flow_design/steps.pyGivenI upload all flows using the resource manager with name "{manager_name}"Uploads all flows using a specified resource manager.
flow_design/steps.pyGivenI upload the flow with name "{name}" using the default resource managerUploads a flow with given name using a specified resource manager.
flow_design/steps.pyGivenI upload the flow with name "{name}" using the resource manager with name "{manager_name}"Uploads a flow with given name using a specified resource manager.
flow_design/steps.pyThenthe "{key}" of the last flow design should be changed to "{value}"Validates that the value of a given key of the latest flow design was updated to an expected value.
flow_design/steps.pyThenthe number of flow designs has decreased by "{expected_decrease:d}"Validates that the number of flow designs has decreased by the expected amount.
flow_design/steps.pyThenthe number of flow designs has increased by "{expected_increase:d}"Validates that the number of flow designs has increased by the expected amount.

Group

Statement File LocationTypeStep DefinitionWhat Is It Used For?
group/steps.pyThenI cannot update group "{group_name}" with property "{property_name}" being blankVerify that group without cannot be updated if name property specified incorrectly.
group/steps.pyThenI cannot update group "{group_name}" without property "{property_name}"Verify that group without cannot be updated if name property specified incorrectly.
group/steps.pyGivenI create the group "{group_name}" from file "{file_name}"Create group using json payload from file.
group/steps.pyWhenI set permission scope to "{state_to_set}" for group "{group_name}"Set scopes for group stored in tests context dictionary.
group/steps.pyWhenI update group "{group_name}" using template "{file_name}"Update group properties using json file template.
group/steps.pyGivenI upload all permission groups matching the regex pattern "{pattern}" using the default resource managerUploads all permission groups whose names match the given regex pattern using a specified resource manager.
group/steps.pyGivenI upload all permission groups matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all permission groups whose names match the given regex pattern using a specified resource manager.
group/steps.pyGivenI upload all permission groups using the default resource managerUploads all permission groups using a specified resource manager.
group/steps.pyGivenI upload all permission groups using the resource manager with name "{manager_name}"Uploads all permission groups using a specified resource manager.
group/steps.pyGivenI upload the permission group with name "{name}" using the default resource managerUploads a permission group with given name using a specified resource manager.
group/steps.pyGivenI upload the permission group with name "{name}" using the resource manager with name "{manager_name}"Uploads a permission group with given name using a specified resource manager.
group/steps.pyThenthe group "{group_name}" contains scope property "{attribute}" with value "{value}"Verify that group have property.
group/steps.pyThenthe group "{group_name}" contains the attribute "{attribute}" with value "{value}"Verify that group have property.
group/steps.pyThenthe group "{group_name}" do not have scopesVerify that created group do not have scopes.
group/steps.pyThenthe group "{group_name}" is createdGet group details and verify that it exists.
group/steps.pyThenthe group "{group_name}" is deletedDelete created group that saved in test context dictionary.
group/steps.pyThenthe group "{group_name}" is in "{state_to_check}"Verify that group blacklisted or whitelisted.
group/steps.pyThenthe group with blank property "{property_name}" cannot be createdCreate new group and verify that is not possible due to name object is empty.
group/steps.pyThenthe group without property "{property_name}" cannot be createdCreate new group and verify that is not possible due to name object is absent.
group/steps.pyThenthe user "{user_name}" cannot be added (or deleted) to the group with id "{group_id}"Verify that existing users cannot be added (or deleted) to non-existing group.
group/steps.pyThenthe user "{user_name}" is removed from the group "{group_name}"Verify that my user was removed from the group list.
group/steps.pyThenthe user with id "{user_id}" cannot be added (or deleted) to existing group "{group_name}"Verify that non-existing users cannot be added (or deleted) to existing group.

Market_Adapter

Statement File LocationTypeStep DefinitionWhat Is It Used For?
market_adapter/steps.pyGivenI change the "{key}" of the last market adapter to "{value}"Updates the value of a key of the last market adapter.
market_adapter/steps.pyWhenI change the "{key}" of the last market adapter to "{value}"Updates the value of a key of the last market adapter.
market_adapter/steps.pyGivenI check the number of market adapters in my namespaceChecks the number of market adapters in the namespace.
market_adapter/steps.pyGivenI create a configured market adapter from "{file_name}"Creates a market adapter from a file and replaces its Transformation Configuration names with IDs.
market_adapter/steps.pyGivenI create a market adapter from "{file_name}" with configuration "{conf_name}"Creates a market adapter from a file and a given transformation configuration.
market_adapter/steps.pyGivenI create a market adapter from "{file_name}" with transformation configuration "{conf_name}"Creates a market adapter from a file and a given transformation configuration.
market_adapter/steps.pyGivenI create all market adapters from "{file_name}"Creates market adapters from a given file.
market_adapter/steps.pyWhenI create all market adapters from "{file_name}"Creates market adapters from a given file.
market_adapter/steps.pyGivenI delete the last market adapterDeletes the last market adapter.
market_adapter/steps.pyWhenI delete the last market adapterDeletes the last market adapter.
market_adapter/steps.pyThenI have no market adapters anymoreChecks that there are no more market adapters.
market_adapter/steps.pyThenI should be able to see the names of all market adaptersValidates whether all marker adapters in the active namespace have names.
market_adapter/steps.pyThenI should see the details of the last market adapterValidates that the details of the last market adapter can be retrieved.
market_adapter/steps.pyThenI should see the versions of the last market adapterValidates that the versions of the last market adapter can be retrieved.
market_adapter/steps.pyGivenI upload all market adapters matching the regex pattern "{pattern}" using the default resource managerUploads all market adapters whose names match the given regex pattern using a specified resource manager.
market_adapter/steps.pyGivenI upload all market adapters matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all market adapters whose names match the given regex pattern using a specified resource manager.
market_adapter/steps.pyGivenI upload all market adapters using the default resource managerUploads all market adapters using a specified resource manager.
market_adapter/steps.pyGivenI upload all market adapters using the resource manager with name "{manager_name}"Uploads all market adapters using a specified resource manager.
market_adapter/steps.pyGivenI upload the market adapter with name "{name}" using the default resource managerUploads a market adapter with given name using a specified resource manager.
market_adapter/steps.pyGivenI upload the market adapter with name "{name}" using the resource manager with name "{manager_name}"Uploads a market adapter with given name using a specified resource manager.
market_adapter/steps.pyThenthe "{key}" of the last market adapter should be changed to "{value}"Validates that the value of a key of the last market adapter has been updated.
market_adapter/steps.pyThenthe number of market adapters has decreased by "{expected_decrease:d}"Validates that the number of market adapters has decreased by the expected amount.
market_adapter/steps.pyThenthe number of market adapters has increased by "{expected_increase:d}"Validates that the number of market adapters has increased by the expected amount.

Ml_Models

Statement File LocationTypeStep DefinitionWhat Is It Used For?
ml_models/steps.pyGivenI create an ML model with name "{model_name}", runtime "{runtime}" and file "{file_name}"Creates a new ML Model.
ml_models/steps.pyWhenI delete the ML model with the name "{model_name}"Deletes an ML Model.
ml_models/steps.pyWhenI deploy the ML model with the name "{model_name}"Deploys an ML Model.
ml_models/steps.pyWhenI disable the ML model with the name "{model_name}"Disables an ML Model.
ml_models/steps.pyThenI expect an ML model with the name "{model_name}", runtime "{runtime}", file "{file_name}" and active status "{active}"Checks if an ML Model has all these values in its attributes.
ml_models/steps.pyThenI expect there is no ML model with the name "{model_name}"Checks if an ML Model does not exist.
ml_models/steps.pyGivenI update an ML model with name "{model_name}", runtime "{runtime}" and file to "{file_name}"Updates the ML Model with the model_name.
ml_models/steps.pyGivenThere is an ML model with the name "{model_name}"Checks if an ML Model exist.

Namespace

Statement File LocationTypeStep DefinitionWhat Is It Used For?
namespace/steps.pyGivenI bootstrap the current namespaceBootstraps the current namespace.
namespace/steps.pyWhenI bootstrap the current namespaceBootstraps the current namespace.
namespace/steps.pyGivenI bootstrap the namespace with id "{namespace_id}"Bootstraps the namespace which was created by the Given I create a namespace from "generic_customer.json" step.
namespace/steps.pyWhenI bootstrap the namespace with id "{namespace_id}"Bootstraps the namespace which was created by the Given I create a namespace from "generic_customer.json" step.
namespace/steps.pyThenI expect the current namespace to be bootstrappedMakes sure that all needed resources have been instantiated in Datastore, BigTable and BigQuery.
namespace/steps.pyGivenI set the "{property_name}" in the current namespace to "{property_value}"Sets a property in the current namespace.
namespace/steps.pyGivenI upload all namespace properties matching the regex pattern "{pattern}" using the default resource managerUploads all namespace properties whose names match the given regex pattern using a specified resource manager.
namespace/steps.pyGivenI upload all namespace properties matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all namespace properties whose names match the given regex pattern using a specified resource manager.
namespace/steps.pyGivenI upload all namespace properties using the default resource managerUploads all namespace properties using a specified resource manager.
namespace/steps.pyGivenI upload all namespace properties using the resource manager with name "{manager_name}"Uploads all namespace properties using a specified resource manager.
namespace/steps.pyGivenI upload the namespace property with name "{name}" using the default resource managerUploads a namespace property with given name using a specified resource manager.
namespace/steps.pyGivenI upload the namespace property with name "{name}" using the resource manager with name "{manager_name}"Uploads a namespace property with given name using a specified resource manager.

Objects

Statement File LocationTypeStep DefinitionWhat Is It Used For?
objects.pyWhenI cannot create a "{obj_type_name}" with invalid configuration file "{file_name}"Try to create an object of the given type from invalid configuration file.
objects.pyThenI cannot get a "{obj_type_name}" by nonexistent id "{nonexistent_id}"Try to get an object by nonexistent id.
objects.pyThenI cannot get deleted "{obj_type_name}" by idTry to get deleted/nonexistent object by id.
objects.pyWhenI cannot update nonexistent "{obj_type_name}" with configuration file "{file_name}"Try to create an object of the given type from invalid configuration file.
objects.pyGivenI change the "{key}" attribute of the "{obj_type_name}" with name "{name}" to "{value}"Updates a string attribute of a certain object with valid value.
objects.pyWhenI change the "{key}" attribute of the "{obj_type_name}" with name "{name}" to "{value}"Updates a string attribute of a certain object with valid value.
objects.pyWhenI delete the "{obj_type_name}" with the name "{name}"Delete an object by name.
objects.pyThenI delete the "{obj_type_name}" with the name "{name}"Delete an object by name.
objects.pyThenI get the "{obj_type_name}" by id and verify all updated fieldsGet an object by id and verify it was updated as expected.
objects.pyWhenI update the "{obj_type_name}" with the name "{name}" with configuration file "{file_name}"Update an object using a file.
objects.pyThenchanging the "{key}" attribute of the "{obj_type_name}" with name "{name}" to "{value}" returns a Bad RequestUpdates a string attribute of a certain object with invalid value.
objects.pyGiventhe "{obj_type_name}" with the id "{obj_id}" does not existChecks if an object with a given ID exists.
objects.pyThenthe "{obj_type_name}" with the id "{obj_id}" does not existChecks if an object with a given ID exists.
objects.pyGiventhe "{obj_type_name}" with the id "{obj_id}" existsChecks if an object with a given ID exists.
objects.pyThenthe "{obj_type_name}" with the id "{obj_id}" existsChecks if an object with a given ID exists.
objects.pyGiventhe "{obj_type_name}" with the name "{obj_name}" does not existChecks if an object with a given name does not exist.
objects.pyThenthe "{obj_type_name}" with the name "{obj_name}" does not existChecks if an object with a given name does not exist.
objects.pyGiventhe "{obj_type_name}" with the name "{obj_name}" existsChecks if an object with a given name exists.
objects.pyWhenthe "{obj_type_name}" with the name "{obj_name}" existsChecks if an object with a given name exists.
objects.pyThenthe "{obj_type_name}" with the name "{obj_name}" existsChecks if an object with a given name exists.

Polling

Statement File LocationTypeStep DefinitionWhat Is It Used For?
polling.pyThenI do following steps with a timeout of "{timeout}" minutes and a poll frequency of "{poll_freq}" seconds',Sets the timeout and poll frequency in the context to be used for certain requests that need to wait for results.
polling.pyGivenI wait for "{amount_in_secs:d}" secondsPauses the tests for a given amount of seconds.
polling.pyWhenI wait for "{amount_in_secs:d}" secondsPauses the tests for a given amount of seconds.
polling.pyThenI wait for "{amount_in_secs:d}" secondsPauses the tests for a given amount of seconds.

Promo

Statement File LocationTypeStep DefinitionWhat Is It Used For?
promo/steps.pyThenI assign the flow design with name "{flow_design_name}" to promo config "{name}"Assigns a flow design to promo configuration.
promo/steps.pyThenI assign the market adapter with name "{ma_name}" to promo config "{name}"Assigns a market adapter to promo configuration.
promo/steps.pyThenI check if the flow design with name "{flow_design_name}" is assigned to "{name}" configChecks if a flow design is assigned to a promo.
promo/steps.pyThenI check if the market adapter with name "{ma_name}" is assigned to "{name}" configChecks if a market adapter is assigned to a promo.
promo/steps.pyGivenI check the metric with the name "{metric_name}" has value "{value}" for the promo config with the name "{name_promo}"Checks the metrics of the instance.
promo/steps.pyThenI check the metric with the name "{metric_name}" has value "{value}" for the promo config with the name "{name_promo}"Checks the metrics of the instance.
promo/steps.pyGivenI check the number of promo configs is equal "{amount:d}"Checks the amount of promo configurations that exist in the namespace.
promo/steps.pyThenI check the number of promo configs is equal "{amount:d}"Checks the amount of promo configurations that exist in the namespace.
promo/steps.pyGivenI create all promo configs from "{file_name}"Creates all promo configurations present in a given file.
promo/steps.pyGivenI delete the promo config "{name}"Delete the promo config.
promo/steps.pyWhenI delete the promo config "{name}"Delete the promo config.
promo/steps.pyThenI expect a promo config with the name "{name}" to have the attribute "{attr}" with the value "{value}"Checks if the value of an attribute in the promo config.
promo/steps.pyGivenI try to create invalid promo config from "{file_name}" and expect status code "{status_code:d}" and message "{message}"Setup for the entire module.
promo/steps.pyThenI update the attribute "{attr}" with value "{value}" in promo config "{name}"Updates the attribute with given value in the promo config.

Pubsub

Statement File LocationTypeStep DefinitionWhat Is It Used For?
pubsub/steps.pyGivenI create the pubsub subscriber to subscription "{name}"Creates a pubsub subscription.
pubsub/steps.pyThenI pull 1 message from the pubsub subscription "{name}" and compare it with the content in file "{file_path}"Pulls 1 message from pubsub subscription and compares the content with the payload of a given file.
pubsub/steps.pyThenI pull 1 message from the pubsub subscription "{name}" and compare it with the content in file "{file_path}" after processed by script in "{script_path}"Pulls 1 message from pubsub subscription and compares the content with the payload of a given file. The content of the file and the output of pubsub is processed by a script before comparison.

Query

Statement File LocationTypeStep DefinitionWhat Is It Used For?
query/steps.pyThenI should be able to find datasource "{datasource_id}" with query "{query}"Search datasource by id and filter with Query request.
query/steps.pyThenI use advanced search to check that previous version of a datapoint is saved with the value "{value}" for the timestamp "{timestamp}" for the channel "{channel_name}" on a datasource with id "{datasource_id}"Uses advanced search to check the value of a previous datapoint version.
query/steps.pyThenI use advanced search to check the annotation "{annotation_name}" with the key "{annotation_key}" on the sequence id "{sequence_id}" has a value "{value}" for the timestamp "{timestamp}" for the channel "{channel_name}" on a datasource with id "{datasource_id}"Uses advanced search to check the DPA value of a datapoint.
query/steps.pyThenI use advanced search to check the annotation "{annotation_name}" with the key "{annotation_key}" on the sequence id "{sequence_id}" has a value "{value}" for the timestamp "{timestamp}" for the channel "{channel_name}" on a datasource with id "{datasource_id}" after (?:flow execution|ingestion)Uses advanced search to check the annotation value of a datapoint after ingestion.
query/steps.pyThenI use advanced search to check the datapoint attribute "{dpa_name}" value is "{value}" for the timestamp "{timestamp}" for the channel "{channel_name}" on a datasource with id "{datasource_id}"Uses advanced search to check the DPA value of a datapoint.
query/steps.pyThenI use advanced search to check the datapoint attribute "{dpa_name}" value is "{value}" for the timestamp "{timestamp}" for the channel "{channel_name}" on a datasource with id "{datasource_id}" after (?:flow execution|ingestion)Uses advanced search to check the DPA value of a datapoint.
query/steps.pyThenI use advanced search to check the datapoint value is "{value}" for the timestamp "{timestamp}" for the channel "{channel_name}" on a datasource with id "{datasource_id}"Uses advanced search to check the value of a datapoint.
query/steps.pyThenI use advanced search to check the datapoint value is "{value}" for the timestamp "{timestamp}" for the channel "{channel_name}" on a datasource with id "{datasource_id}" after (?:flow execution|ingestion)Uses advanced search to check the datapoint value of a datapoint after ingestion.

Resource_Manager

Statement File LocationTypeStep DefinitionWhat Is It Used For?
resource_manager/steps.pyGivenI create a resource manager from the global configurations directoryCreates a resource :class:Manager with manager_name from the provided dirpath to use for configuration management.
resource_manager/steps.pyGivenI create a resource manager with name "{manager_name}" from directory "{dirpath}"Creates a resource :class:Manager with manager_name from the provided dirpath to use for configuration management.
resource_manager/steps.pyGivenI upload all configurations using the default resource managerUploads all configurations stored in the specified resource manager.
resource_manager/steps.pyGivenI upload all configurations using the resource manager with name "{manager_name}"Uploads all configurations stored in the specified resource manager.

Rule

Statement File LocationTypeStep DefinitionWhat Is It Used For?
rule/steps.pyWhenI change the "{key}" of the last rule of type "{rule_type_name}" to "{value}"Updates the value of a given key of the last rule in the namespace.
rule/steps.pyGivenI check the number of rules of rule type "{rule_type_name}" in my namespaceFetches the rules of a specific type from the namespace and stores them in the tests context dictionary.
rule/steps.pyWhenI create a rule from "{file_name}"Creates a rule from a given file.
rule/steps.pyGivenI create all rules from "{file_name}"Creates all rules present in a given file.
rule/steps.pyWhenI delete the last rule of type "{rule_type_name}"Deletes the last rule in the namespace.
rule/steps.pyThenI should be able to see the content of the rule typesValidates that all the rule types in the namespace have contents.
rule/steps.pyThenI should be able to see the names of all rules of type "{rule_type_name}"Validates that all the rules in the namespace have a name.
rule/steps.pyThenI should see the details of the last rule of type "{rule_type_name}"Validates that the details of the last rule in the namespace can be fetched.
rule/steps.pyThenI should see the versions of the last rule of type "{rule_type_name}"Validates that the versions of the last rule in the namespace can be fetched.
rule/steps.pyGivenI upload all rules matching the regex pattern "{pattern}" using the default resource managerUploads all rules whose names match the given regex pattern using a specified resource manager.
rule/steps.pyGivenI upload all rules matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all rules whose names match the given regex pattern using a specified resource manager.
rule/steps.pyGivenI upload all rules using the default resource managerUploads all rules using a specified resource manager.
rule/steps.pyGivenI upload all rules using the resource manager with name "{manager_name}"Uploads all rules using a specified resource manager.
rule/steps.pyGivenI upload all transform rules matching the regex pattern "{pattern}" using the default resource managerUploads all transform rules whose names match the given regex pattern using a specified resource manager.
rule/steps.pyGivenI upload all transform rules matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all transform rules whose names match the given regex pattern using a specified resource manager.
rule/steps.pyGivenI upload all transform rules using the default resource managerUploads all transform rules using a specified resource manager.
rule/steps.pyGivenI upload all transform rules using the resource manager with name "{manager_name}"Uploads all transform rules using a specified resource manager.
rule/steps.pyGivenI upload the rule with name "{name}" using the default resource managerUploads a rule with given name using a specified resource manager.
rule/steps.pyGivenI upload the rule with name "{name}" using the resource manager with name "{manager_name}"Uploads a rule with given name using a specified resource manager.
rule/steps.pyGivenI upload the transform rule with name "{name}" using the default resource managerUploads a transform rule with given name using a specified resource manager.
rule/steps.pyGivenI upload the transform rule with name "{name}" using the resource manager with name "{manager_name}"Uploads a transform rule with given name using a specified resource manager.
rule/steps.pyThenthe "{key}" of the last rule of type "{rule_type_name}" should be changed to "{value}"Validates that the value of a given key of the last rule in the namespace has changed to the expected value.
rule/steps.pyThenthe number of rules is "{amount:d}"Checks the number of rules created.
rule/steps.pyThenthe number of rules of rule type "{rule_type_name}" has decreased by "{expected_decrease:d}"Validates that the number of rules of a given type has decreased by an expected amount.
rule/steps.pyThenthe number of rules of rule type "{rule_type_name}" has increased by "{expected_increase:d}"Validates that the number of rules of a given type has increased by an expected amount.

Soap_Endpoint

Statement File LocationTypeStep DefinitionWhat Is It Used For?
soap_endpoint/steps.pyGivenI consume the soap endpoint with name "{soap_endpoint_name}" with the file "{file_name}"Consumes a SOAP endpoint using a given file.
soap_endpoint/steps.pyThenI consume the soap endpoint with name "{soap_endpoint_name}" with the file "{file_name}"Consumes a SOAP endpoint using a given file.
soap_endpoint/steps.pyGivenI create all soap endpoints from "{soap_endpoints_file_name}"Creates SOAP endpoints from a file.
soap_endpoint/steps.pyGivenI delete the soap endpoint with name "{soap_endpoint_name}"Delete SOAP endpoint.
soap_endpoint/steps.pyWhenI delete the soap endpoint with name "{soap_endpoint_name}"Delete SOAP endpoint.
soap_endpoint/steps.pyThenI expect "{expected_count:d}" SOAP response file(s) with operation "{soap_operation_name}"Find the SOAP message response file.
soap_endpoint/steps.pyThenI expect the attribute "{attribute}" contains the value "{expected_value}" for soap endpoint name "{soap_endpoint_name}"Retrieves a SOAP details based on the name and check the attributes.
soap_endpoint/steps.pyGivenI expect to receive an error "{error_text}" on consuming SOAP endpoint with name "{soap_endpoint_name}" from template file "{file_name}"Consumes a SOAP endpoint using a given file and verify the error for incorrect XML content.
soap_endpoint/steps.pyGivenI update the attribute "{attribute}" with value "{value}" for soap endpoint name "{soap_endpoint_name}"Updates a SOAP endpoint attributes.
soap_endpoint/steps.pyGivenI upload all SOAP endpoints matching the regex pattern "{pattern}" using the default resource managerUploads all SOAP endpoints whose names match the given regex pattern using a specified resource manager.
soap_endpoint/steps.pyGivenI upload all SOAP endpoints matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all SOAP endpoints whose names match the given regex pattern using a specified resource manager.
soap_endpoint/steps.pyGivenI upload all SOAP endpoints using the default resource managerUploads all SOAP endpoints using a specified resource manager.
soap_endpoint/steps.pyGivenI upload all SOAP endpoints using the resource manager with name "{manager_name}"Uploads all SOAP endpoints using a specified resource manager.
soap_endpoint/steps.pyGivenI upload the SOAP endpoint with name "{name}" using the default resource managerUploads a SOAP endpoint with given name using a specified resource manager.
soap_endpoint/steps.pyGivenI upload the SOAP endpoint with name "{name}" using the resource manager with name "{manager_name}"Uploads a SOAP endpoint with given name using a specified resource manager.
soap_endpoint/steps.pyGiventhere is/are "{expected_count:d}" SOAP endpoint(s) createdRetrieves all SOAP endpoints.
soap_endpoint/steps.pyThenthere is/are "{expected_count:d}" SOAP endpoint(s) createdRetrieves all SOAP endpoints.

Tag

Statement File LocationTypeStep DefinitionWhat Is It Used For?
tag/steps.pyWhenI create a tag with the name "{tag_name}" with a property "{property_name}" and a value "{property_value}" for datasource "{datasource_id}"Creates a tag on the specified datasource. Valid from and version are set to 2000-01-01T00:00:00Z.
tag/steps.pyWhenI create a tag with the name "{tag_name}" with a property "{property_name}" and a value "{property_value}", valid from "{valid_from}" and a version "{version}" for datasource "{datasource_id}"Creates a tag on the specified datasource with specific version and valid from values.
tag/steps.pyWhenI create a tag with the name "{tag_name}" with a property "{property_name}" with a value "{property_value}" and a version "{version}" for datasource "{datasource_id}"Creates a tag on the specified datasource with specific version. Valid from is set to 2000-01-01T00:00:00Z.
tag/steps.pyGivenI create tags from file "{file_name}"Creates tags from a file on the specified datasource.
tag/steps.pyWhenI create tags from file "{file_name}"Creates tags from a file on the specified datasource.
tag/steps.pyThenI expect for datasource with id "{datasource_id}" for the tag "{tag_key}" to have "{n_versions:d}" versionsPeriodically checks the presence of a tag with a specific number of versions on a datasource.
tag/steps.pyThenI expect for datasource with id "{datasource_id}" the tag "{tag_key}" with property "{property_key}" and the value "{property_value}" to be valid from "{tag_valid_from}"Periodically checks the presence of a tag with a specific valid_from and a specific property on a datasource.
tag/steps.pyThenI expect for datasource with id "{datasource_id}" the version "{tag_version}" of the tag "{tag_key}" with property "{property_key}" and the value "{property_value}" to be valid from "{tag_valid_from}" and removed "{removed}"Periodically checks the presence of a tag with a specific version and a specific property value, valid from and removed attributes on a datasource.
tag/steps.pyWhenI expect in tag "{tag_key}" the property "{property_key}" for datasource "{datasource_id}"Periodically checks the presence of a tag with a specific property on a datasource.
tag/steps.pyThenI expect in tag "{tag_key}" the property "{property_key}" for datasource "{datasource_id}"Periodically checks the presence of a tag with a specific property on a datasource.
tag/steps.pyGivenI expect in tag "{tag_key}" the property "{property_key}" for datasource "{datasource_id}"Periodically checks the presence of a tag with a specific property on a datasource.
tag/steps.pyWhenI expect in tag "{tag_key}" the property "{property_key}" with value "{property_value}" for datasource "{datasource_id}"Periodically checks the presence of a tag with a specific property value on a datasource.
tag/steps.pyThenI expect in tag "{tag_key}" the property "{property_key}" with value "{property_value}" for datasource "{datasource_id}"Periodically checks the presence of a tag with a specific property value on a datasource.
tag/steps.pyGivenI expect in tag "{tag_key}" the property "{property_key}" with value "{property_value}" for datasource "{datasource_id}"Periodically checks the presence of a tag with a specific property value on a datasource.
tag/steps.pyWhenI expect in tag "{tag_key}" the property "{property_key}" with value "{property_value}" for datasource "{datasource_id}" within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_frequency_in_seconds:d}" secondsPeriodically checks the presence of a tag with a specific property value on a datasource with a custom polling frequency.
tag/steps.pyThenI expect in tag "{tag_key}" the property "{property_key}" with value "{property_value}" for datasource "{datasource_id}" within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_frequency_in_seconds:d}" secondsPeriodically checks the presence of a tag with a specific property value on a datasource with a custom polling frequency.
tag/steps.pyThenI expect no tags for datasource "{datasource_id}"Verifies no tags for the given datasource id.
tag/steps.pyGivenI expect no tags for datasource "{datasource_id}"Verifies no tags for the given datasource id.
tag/steps.pyWhenI update or create tags from file "{file_name}" for datasource "{datasource_id}"Creates or updates tags from a file on the specified datasource.
tag/steps.pyWhenI update tags from file "{file_name}" for datasource "{datasource_id}"Updates tags from a file on the specified datasource.

Tasks

Statement File LocationTypeStep DefinitionWhat Is It Used For?
tasks/task_statuses/steps.pyGivenI create a task status with name "{name}"Creates a new task status with the given name.
tasks/task_statuses/steps.pyGivenI create a task status with name "{name}", if it doesn't existCreates a new task status with the given name, if it doesn't exist.
tasks/task_types/steps.pyGivenI create a task type with name "{name}"Creates a new task type with the given name, if it doesn't exist.
tasks/task_boards/steps.pyGivenI create all task boards from "{file_name}"Creates task boards from a given file.
tasks/steps.pyThenI expect "{amount:d}" task(s) with the title "{title}" within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_frequency_in_seconds:d}" secondsPoll to check if the expected amount of tasks with given title exist.
tasks/steps.pyWhenI expect "{amount:d}" task(s) with the title "{title}" within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_frequency_in_seconds:d}" secondsPoll to check if the expected amount of tasks with given title exist.
tasks/steps.pyThenI expect the number of tasks to be "{amount:d}"Check the number of tasks.
tasks/task_boards/steps.pyThenI expect the task with the title "{task_title}" on the task board with the name "{task_board_name}"Check if the task is on the task board.
tasks/task_boards/steps.pyThenI expect the task with the title "{task_title}" on the task board with the name "{task_board_name}" under status "{task_status}"Check if the task is on the task board under appropriate status.
tasks/steps.pyThenI expect there to be "{amount:d}" more tasks within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_frequency_in_seconds:d}" secondsCheck if the number of tasks has increased by a certain amount.
tasks/steps.pyGivenI save the number of tasks on the current namespaceSave the number of tasks.
tasks/task_statuses/steps.pyGivenI upload all task statuses matching the regex pattern '{pattern}' using the default resource managerUploads all task statuses whose names match the given regex pattern using a specified resource manager.
tasks/task_statuses/steps.pyGivenI upload all task statuses matching the regex pattern '{pattern}' using the resource manager with name '{manager_name}'Uploads all task statuses whose names match the given regex pattern using a specified resource manager.
tasks/task_statuses/steps.pyGivenI upload all task statuses using the default resource managerUploads all task statuses using a specified resource manager.
tasks/task_statuses/steps.pyGivenI upload all task statuses using the resource manager with name '{manager_name}'Uploads all task statuses using a specified resource manager.
tasks/task_types/steps.pyGivenI upload all task types matching the regex pattern '{pattern}' using the default resource managerUploads all task types whose names match the given regex pattern using a specified resource manager.
tasks/task_types/steps.pyGivenI upload all task types matching the regex pattern '{pattern}' using the resource manager with name '{manager_name}'Uploads all task types whose names match the given regex pattern using a specified resource manager.
tasks/task_types/steps.pyGivenI upload all task types using the default resource managerUploads all task types using a specified resource manager.
tasks/task_types/steps.pyGivenI upload all task types using the resource manager with name '{manager_name}'Uploads all task types using a specified resource manager.
tasks/task_boards/steps.pyGivenI upload all taskboards matching the regex pattern '{pattern}' using the default resource managerUploads all taskboards whose names match the given regex pattern using a specified resource manager.
tasks/task_boards/steps.pyGivenI upload all taskboards matching the regex pattern '{pattern}' using the resource manager with name '{manager_name}'Uploads all taskboards whose names match the given regex pattern using a specified resource manager.
tasks/task_boards/steps.pyGivenI upload all taskboards using the default resource managerUploads all taskboards using a specified resource manager.
tasks/task_boards/steps.pyGivenI upload all taskboards using the resource manager with name '{manager_name}'Uploads all taskboards using a specified resource manager.
tasks/task_statuses/steps.pyGivenI upload the task status with name '{name}' using the default resource managerUploads a task status with given name using a specified resource manager.
tasks/task_statuses/steps.pyGivenI upload the task status with name '{name}' using the resource manager with name '{manager_name}'Uploads a task status with given name using a specified resource manager.
tasks/task_types/steps.pyGivenI upload the task type with name '{name}' using the default resource managerUploads a task type with given name using a specified resource manager.
tasks/task_types/steps.pyGivenI upload the task type with name '{name}' using the resource manager with name '{manager_name}'Uploads a task type with given name using a specified resource manager.
tasks/task_boards/steps.pyGivenI upload the taskboard with name '{name}' using the default resource managerUploads a taskboard with given name using a specified resource manager.
tasks/task_boards/steps.pyGivenI upload the taskboard with name '{name}' using the resource manager with name '{manager_name}'Uploads a taskboard with given name using a specified resource manager.
tasks/steps.pyGiventhe number of tasks is "{amount:d}"Check the number of tasks.
tasks/steps.pyThenthe task with the title "{task_title}" has the attribute "{attribute_name}" with the value "{attribute_value}"Check some of the tasks attributes value.
tasks/steps.pyThenthe task with the title "{task_title}" has the subject attribute "{attribute_name}" with the value "{attribute_value}"Check the attribute value "subject" of the task.
tasks/steps.pyThenthe task with the title "{task_title}" is linked to the task board with the name "{task_board_names}"Check if the task is linked to the task board.
tasks/steps.pyThenthe task with the title "{title}" exists within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_frequency_in_seconds:d}" secondsPoll to check if the task with given title exists.
tasks/steps.pyWhenthe task with the title "{title}" exists within "{time_limit_in_minutes:d}" minutes with a poll frequency of "{polling_frequency_in_seconds:d}" secondsPoll to check if the task with given title exists.

Time_Series

Statement File LocationTypeStep DefinitionWhat Is It Used For?
time_series/steps.pyThenI expect a datapoint on timestamp "{timestamp}" to have a new version for continuous flow channel "{channel_name}" on datasource with id "{datasource_id}" after datapoint editingChecks that the datapoint version is updated after editing for continuous flow channel.
time_series/steps.pyThenI expect a datapoint on timestamp "{timestamp}" to have the same version for scenario flow channel "{channel_name}" on datasource with id "{datasource_id}" after datapoint editingChecks that the datapoint version is not updated after editing for a scenario flow channel.
time_series/steps.pyThenI expect channels with the names "{channel_list}" to have timeseries data between "{start_date}" and "{end_date}" for channel family "{channel_family}" on the datasource with id "{datasource_id}"Verify that each channel from a given list contains timeseries data within a specified date range and channel family filter for the given datasource id.
time_series/steps.pyThenI expect channels with the names "{channel_list}" to have timeseries data between "{start_date}" and "{end_date}" for channel family "{channel_family}" on the datasource with id "{datasource_id}" when using "{view}" viewVerify that each channel from a given list contains timeseries data within a specified date range and channel family filter for the given datasource id with the requested view.
time_series/steps.pyThenI expect channels with the names "{channel_list}" to have timeseries data between "{start_date}" and "{end_date}" on the datasource with id "{datasource_id}"Verify that each channel from a given list contains timeseries data within a specified date range for the given datasource id.
time_series/steps.pyThenI expect channels with the names "{channel_list}" to have timeseries data between "{start_date}" and "{end_date}" on the datasource with id "{datasource_id}" when using "{view}" viewVerify that each channel from a given list contains timeseries data within a specified date range for the given datasource id with the requested view.
time_series/steps.pyThenI expect in channel "{channel_classifier}" an annotation on index "{timestamp}" for property "{annotation_key}" with value "{annotation_value}" for datasource with ID "{datasource_id}"Checks that an annotation is present at the expected time after processing a datasource.
time_series/steps.pyThenI expect in datasource with id "{datasource_id}" channel "{channel_classifier}" to have "{amount:d}" values from "{start_date}" for "{years}" yearsValidates a timeseries data point is present in a channel classifier.
time_series/steps.pyThenI expect in datasource with id "{datasource_id}" for the last flow on the destination channel "{destination_classifier}" in channel "{channel_classifier}" data point "{timestamp}", "{value}"Validates a timeseries data point is present in a channel classifier for the last flow run.
time_series/steps.pyThenI expect in datasource with id "{datasource_id}" in channel "{channel_classifier}" data point "{timestamp}", "{value}"Validates a timeseries data point is present in a channel classifier.
time_series/steps.pyThenI expect no annotation for property "{annotation_key}" with value "{annotation_value}" in channel "{channel_classifier}" for the last flow on the destination channel "{destination_classifier}" on index "{timestamp}" for datasource with ID "{datasource_id}"Checks that an annotation is NOT present at the expected timestamp after processing a datasource.
time_series/steps.pyThenI expect no timeseries data for the datasource with id "{datasource_id}"Checks the datasource has no timeseries data.
time_series/steps.pyThenI expect on datasource with id "{datasource_id}" channel "{channel_classifier}" to have exactly "{amount:d}" annotations with the name "{annotation_name}" and the property "{annotation_prop_name}" between "{start_date}" and "{end_date}"Validates if exact amount of annotations is present in a channel classifier.
time_series/steps.pyThenI expect on datasource with id "{datasource_id}" channel "{channel_classifier}" to have exactly "{amount:d}" annotations with the name "{annotation_name}" and the property "{annotation_prop_name}" between "{start_date}" and "{end_date}" when using "{view}" view for version depth "{version_depth:d}"Validates if exact amount of annotations is present in a channel classifier with the requested view and specific version depth.
time_series/steps.pyThenI expect on datasource with id "{datasource_id}" channel "{channel_classifier}" to have exactly "{amount:d}" datapoint attribute values with the name "{dpa_name}" between "{start_date}" and "{end_date}"Validates if exact amount of specified datapoint attribute is present in a channel classifier.
time_series/steps.pyThenI expect on datasource with id "{datasource_id}" channel "{channel_classifier}" to have exactly "{amount:d}" datapoint attribute values with the name "{dpa_name}" between "{start_date}" and "{end_date}" when using "{view}" view for version depth "{version_depth:d}"Validates if exact amount of specified datapoint attribute is present in a channel classifier with the requested view and specific version depth.
time_series/steps.pyThenI expect on datasource with id "{datasource_id}" channel "{channel_classifier}" to have exactly "{amount:d}" flags with the name "{flag_name}" between "{start_date}" and "{end_date}" when using "{view}" view for version depth "{version_depth:d}"Validates if exact amount of specified flag is present in a channel classifier with the requested view and specific version depth.
time_series/steps.pyThenI expect on datasource with id "{datasource_id}" channel "{channel_classifier}" to have exactly "{amount:d}" values between "{start_date}" and "{end_date}"Validates if exact amount of timeseries data point is present in a channel classifier.
time_series/steps.pyThenI expect on datasource with id "{datasource_id}" channel "{channel_classifier}" to have exactly "{amount:d}" values between "{start_date}" and "{end_date}" when using "{view}" view for version depth "{version_depth:d}"Validates if exact amount of timeseries data point is present in a channel classifier with the requested view and specific version depth.
time_series/steps.pyThenI expect on datasource with id "{datasource_id}" for the last flow on the destination channel "{destination_classifier}" in channel "{channel_classifier}" to have exactly "{amount:d}" values between "{start_date}" and "{end_date}"Validates if exact amount of timeseries data point is present in a channel classifier for the last flow run.
time_series/steps.pyThenI expect the datapoint attribute-value pairs "{dpa_name}" and "{dpa_value}" in datasource with id "{datasource_id}" in channel "{channel_classifier}" on timestamp "{timestamp}"Validates data point attribute values in a channel classifier.
time_series/steps.pyThenI expect the following datapoint attribute-value pairs in datasource with id "{datasource_id}" in channel "{channel_classifier}" on timestamp "{timestamp}":Validates data point attribute values in a channel classifier.
time_series/steps.pyThenI verify the timeseries datapoint version of channel "{channel_classifier}" in ds id "{datasource_id}" with timestamp "{timestamp}" got updated with new datapoint version value after ingestionVerify DP version value got updated after ingestion.
time_series/steps.pyThenr'I expect the annotation "{annotation_name}" previous value to be equal to "{value}" for r'the timestamp "{timestamp}" on the channel "{annotation_channel}" in the edits history for r'the datasource with id "{datasource_id}"r'(?: with edit reason "{edit_reason}" and user email "{user_email}")?Checks that the previous value of an annotation is as expected in the edits history. Optionally, edit reason and user email can be verified in the edits history.
time_series/steps.pyThenr'I expect the datapoint attribute "{dpa_name}" previous value to be equal to "{value}" for the timestamp "{timestamp}" on the channel "{channel_name}" in the edits history for the datasource with id "{datasource_id}"(?: with edit reason "{edit_reason}" and user email "{user_email}")?Checks that the previous value of a datapoint attribute is as expected in the edits history. Optionally, edit reason and user email can be verified in the edits history.
time_series/steps.pyThenr'I expect the datapoint previous value to be equal to "{value}" for the timestamp "{timestamp}" on the channel "{channel_name}" in the edits history for the datasource with id "{datasource_id}"(?: with edit reason "{edit_reason}" and user email "{user_email}")?Checks that the previous value of a datapoint is as expected in the edits history. Optionally, edit reason and user email can be verified in the edits history.

Timeslice_Groups

Statement File LocationTypeStep DefinitionWhat Is It Used For?
timeslice_groups/steps.pyGivenI create all timeslice groups from "{file_name}"Creates timeslice groups from a given file.
timeslice_groups/steps.pyWhenI create all timeslice groups from "{file_name}"Creates timeslice groups from a given file.
timeslice_groups/steps.pyWhenI set the "{attribute}" of the timeslice group with name "{group_name}" to "{value}"Updates a attribute on a given timeslice group.
timeslice_groups/steps.pyGivenI upload all timeslice groups matching the regex pattern "{pattern}" using the default resource managerUploads all timeslice groups whose names match the given regex pattern using a specified resource manager.
timeslice_groups/steps.pyGivenI upload all timeslice groups matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all timeslice groups whose names match the given regex pattern using a specified resource manager.
timeslice_groups/steps.pyGivenI upload all timeslice groups using the default resource managerUploads all timeslice groups using a specified resource manager.
timeslice_groups/steps.pyGivenI upload all timeslice groups using the resource manager with name "{manager_name}"Uploads all timeslice groups using a specified resource manager.
timeslice_groups/steps.pyGivenI upload the timeslice group with name "{name}" using the default resource managerUploads a timeslice group with given name using a specified resource manager.
timeslice_groups/steps.pyGivenI upload the timeslice group with name "{name}" using the resource manager with name "{manager_name}"Uploads a timeslice group with given name using a specified resource manager.
timeslice_groups/steps.pyGivenThe attribute with name "{attribute}" of timeslice group "{group_name}" is set to "{value}"Validates that the attribute of a timeslice group is present and has the expected value.
timeslice_groups/steps.pyThenThe attribute with name "{attribute}" of timeslice group "{group_name}" is set to "{value}"Validates that the attribute of a timeslice group is present and has the expected value.
timeslice_groups/steps.pyThenThe number of timeslice groups is "{amount:d}"Validates the number of timeslice groups is as expected.
timeslice_groups/steps.pyGivenThe number of timeslice groups is "{amount:d}"Validates the number of timeslice groups is as expected.
timeslice_groups/steps.pyGivenThe timeslice group with name "{group_name}" has "{amount:d}" historical versionsValidates that the number of historical versions of a timeslice group is as expected.
timeslice_groups/steps.pyThenThe timeslice group with name "{group_name}" has "{amount:d}" historical versionsValidates that the number of historical versions of a timeslice group is as expected.
timeslice_groups/steps.pyThenThe timeslice group with name "{group_name}" has "{amount:d}" old versionsValidates that the number of versions of a timeslice group is as expected.
timeslice_groups/steps.pyGivenThe timeslice group with name "{group_name}" has "{amount:d}" versionsValidates that the number of versions of a timeslice group is as expected.

Transformation_Configuration

Statement File LocationTypeStep DefinitionWhat Is It Used For?
transformation_configuration/steps.pyGivenI change the "{key}" of the last transformation configuration to "{value}"Updates the last transformation configuration in the active namespace using a given key and its value.
transformation_configuration/steps.pyWhenI change the "{key}" of the last transformation configuration to "{value}"Updates the last transformation configuration in the active namespace using a given key and its value.
transformation_configuration/steps.pyGivenI check the number of transformation configurations in my namespaceFetches the transformation configurations in the namespace and places them in the tests context dictionary.
transformation_configuration/steps.pyGivenI create a transformation configuration from "{file_name}" with flow design "{flow_design_name}"Creates a transformation configuration with a flow design from a file.
transformation_configuration/steps.pyGivenI create all transformation configurations from "{file_name}"Creates a transformation configuration from a file.
transformation_configuration/steps.pyWhenI delete the last transformation configurationDeletes the last transformation configuration in the active namespace.
transformation_configuration/steps.pyGivenI expect in transformation configuration with name "{tc_name}" the flow properties to contain the key "{prop_key}" with the value "{prop_value}"Validates the flow property key-value of the given transformation configuration.
transformation_configuration/steps.pyThenI have no transformation configurations anymoreChecks that there are no transformation configurations.
transformation_configuration/steps.pyThenI should be able to see the names of all transformation configurationsValidates whether all transformation configurations in the active namespace have a name.
transformation_configuration/steps.pyThenI should see the details of the last transformation configurationValidates whether the details of the last transformation configuration in the active namespace can be fetched.
transformation_configuration/steps.pyThenI should see the versions of the last transformation configurationValidates whether the versions of the last transformation configuration in the active namespace can be fetched.
transformation_configuration/steps.pyGivenI upload all transformation configurations matching the regex pattern "{pattern}" using the default resource managerUploads all transformation configurations whose names match the given regex pattern using a specified resource manager.
transformation_configuration/steps.pyGivenI upload all transformation configurations matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all transformation configurations whose names match the given regex pattern using a specified resource manager.
transformation_configuration/steps.pyGivenI upload all transformation configurations using the default resource managerUploads all transformation configurations using a specified resource manager.
transformation_configuration/steps.pyGivenI upload all transformation configurations using the resource manager with name "{manager_name}"Uploads all transformation configurations using a specified resource manager.
transformation_configuration/steps.pyGivenI upload the transformation configuration with name "{name}" using the default resource managerUploads a transformation configuration with given name using a specified resource manager.
transformation_configuration/steps.pyGivenI upload the transformation configuration with name "{name}" using the resource manager with name "{manager_name}"Uploads a transformation configuration with given name using a specified resource manager.
transformation_configuration/steps.pyThenthe "{key}" of the last transformation configuration should be changed to "{value}"Updates the last transformation configuration in the active namespace using a given key an its value.
transformation_configuration/steps.pyThenthe number of transformation configurations has decreased by "{expected_decrease:d}"Validates that the number of transformation configurations has decreased by an expected amount.
transformation_configuration/steps.pyThenthe number of transformation configurations has increased by "{expected_increase:d}"Validates that the number of transformation configurations has increased by an expected amount.

Triggers

Statement File LocationTypeStep DefinitionWhat Is It Used For?
triggers/steps.pyGivenAvailable triggers technical names are: {names}Gets a list of available triggers.
triggers/steps.pyThenAvailable triggers technical names are: {names}Gets a list of available triggers.
triggers/steps.pyThenI check created time of the file "{file_name}" after the trigger is executedCheck that file's creation time is according to trigger schedule (by file name).
triggers/steps.pyThenI check created time of the file with the name containing "{file_name}" after the trigger is executedCheck that file's creation time is according to trigger schedule (using partial file name search).
triggers/steps.pyThenI check the flow timestamp on channel classifier "{channel_classifier}" on datasource "{datasource_id}" after the trigger is executedChecks that the flow timestamp is according to trigger execution time.
triggers/steps.pyGivenI create a Big Query ingest trigger from file "{file_name}" with the market adapter "{ma_name}"Create a trigger for the BQ ingest service.
triggers/steps.pyGivenI create a flow trigger from file "{file_name}" with the flow "{flow_name}"Create a trigger for the flow service.
triggers/steps.pyGivenI create a trigger from file "{file_name}"Create a trigger.
triggers/steps.pyWhenI create a trigger from file "{file_name}"Create a trigger.
triggers/steps.pyGivenI create a vds trigger from file "{file_name}" with "{flow_name}" chained flowCreate a trigger for the VDS service with chained flow.
triggers/steps.pyWhenI execute the trigger with the name "{trigger_name}"Execute a trigger manually.
triggers/steps.pyGivenI update the trigger with the name "{trigger_name}" the attribute "{attribute}" to "{value}"Updates an attribute of a trigger
triggers/steps.pyWhenI update the trigger with the name "{trigger_name}" the attribute "{attribute}" to "{value}"Updates an attribute of a trigger
triggers/steps.pyThenI update the trigger with the name "{trigger_name}" the attribute "{attribute}" to "{value}"Updates an attribute of a trigger
triggers/steps.pyGivenI upload all trigger schedules matching the regex pattern "{pattern}" using the default resource managerUploads all trigger schedules whose names match the given regex pattern using a specified resource manager.
triggers/steps.pyGivenI upload all trigger schedules matching the regex pattern "{pattern}" using the resource manager with name "{manager_name}"Uploads all trigger schedules whose names match the given regex pattern using a specified resource manager.
triggers/steps.pyGivenI upload all trigger schedules using the default resource managerUploads all trigger schedules using a specified resource manager.
triggers/steps.pyGivenI upload all trigger schedules using the resource manager with name "{manager_name}"Uploads all trigger schedules using a specified resource manager.
triggers/steps.pyGivenI upload the trigger schedule with name "{name}" using the default resource managerUploads a trigger schedule with given name using a specified resource manager.
triggers/steps.pyGivenI upload the trigger schedule with name "{name}" using the resource manager with name "{manager_name}"Uploads a trigger schedule with given name using a specified resource manager.

User

Statement File LocationTypeStep DefinitionWhat Is It Used For?
user/steps.pyWhenI add user "{user_name}" to the group "{group_name}"Add stored user from tests context dictionary to the group.
user/steps.pyWhenI remove user "{user_name}" from the group "{group_name}"Remove stored user from the group.
user/steps.pyGivenI set enabled state to "{enabled}" for user "{user_name}"Set user enabled state to True
user/steps.pyThenI set enabled state to "{enabled}" for user "{user_name}"Set user enabled state to True
user/steps.pyThenthe user "{user_name}" have enabled state equal to "{expected_state}"Verify that user have enabled property set as appropriate.
user/steps.pyThenthe user "{user_name}" is present in the group "{group_name}"Verify that stored user in test dictionary added to the group.
user/steps.pyThenthe user "{user_name}" is present in the list of enabled usersVerify user that stored in test context dictionary is in the list of enabled users.
user/steps.pyThenthe user with id "{user_id}" cannot be enabledVerify error response when setting enabled state for non-existing user.

Virtual_Datasource

Statement File LocationTypeStep DefinitionWhat Is It Used For?
virtual_datasource/steps.pyGivenI create a virtual datasource with name "{virtual_datasource_name}" using the filter "{virtual_datasource_filter}"Creates a virtual datasource.
virtual_datasource/steps.pyGivenI create a virtual datasource with name "{virtual_datasource_name}" using the filter "{virtual_datasource_filter}" and channel classifier "{virtual_datasource_classifier}"Creates a virtual datasource.
virtual_datasource/steps.pyGivenI create all virtual datasources from "{virtual_datasource_file_name}"Creates virtual datasources from json file.
virtual_datasource/steps.pyWhenI create all virtual datasources from "{virtual_datasource_file_name}"Creates virtual datasources from json file.
virtual_datasource/steps.pyGivenI trigger the virtual datasource "{virtual_datasource_name}"Triggers a virtual datasource without chained flow but with start and end date range.
virtual_datasource/steps.pyGivenI trigger the virtual datasource "{virtual_datasource_name}" between "{trigger_start_date}" and "{trigger_end_date}"Triggers a virtual datasource without chained flow but with start and end date range.
virtual_datasource/steps.pyGivenI trigger the virtual datasource "{virtual_datasource_name}" with the chained flow design "{flow_design_name}" between "{trigger_start_date}" and "{trigger_end_date}"Triggers a virtual datasource with a flow design.
virtual_datasource/steps.pyGivenI update the virtual datasource "{virtual_datasource_name}" attribute "{attr_name}" to "{attr_value}"Updates a virtual datasource .

Whitelist

Statement File LocationTypeStep DefinitionWhat Is It Used For?
whitelist/steps.pyGivenI whitelist the test user to the namespace with id "{namespace_id}"Adds the namespace to a whitelisted account.
whitelist/steps.pyWhenI whitelist the test user to the namespace with id "{namespace_id}"Adds the namespace to a whitelisted account.
whitelist/steps.pyGivenI whitelist the test user to the namespace with name "{namespace_name}"Adds the namespace to a whitelisted account by name.
whitelist/steps.pyWhenI whitelist the test user to the namespace with name "{namespace_name}"Adds the namespace to a whitelisted account by name.
whitelist/steps.pyGivenI whitelist user with email "{user_email}" to the namespace with id "{namespace_id}"Adds the namespace to a whitelisted account.
whitelist/steps.pyWhenI whitelist user with email "{user_email}" to the namespace with id "{namespace_id}"Adds the namespace to a whitelisted account.